#ifndef MEMPOOL_H_
#define MEMPOOL_H_

#define SLAB_SIZE_MAX 1024
//如果申请了更大的（相等也还行）内存，自动调用malloc
#define SLABCLASS_MALLOC_SIZE 1048576
#include <common.h>
#include<pthread.h>

/*
mempool 内存池，可以分配小的内存与返回
void mempool_init();
void *mempool_malloc(int size)
//申请内存，申请失败返回空指针
void mempool_free(void*p)
*/

void* slabclass_malloc(void *);
//甚至失败直接置标志位

struct slab;

struct slabclass{
    slab *head, *tail;
    int size;
    int flg;
    //标志位 0正常 1耗尽 2正忙
    pthread_t worktrd;
};

struct slab{
    slabclass *scls;
    slab *nxt;
    bool ismalloc;
    //uint8_t *p;
};

#endif